<!DOCTYPE HTML>

<html lang="en">
<head>

<title>ConcurrentSessionControlAuthenticationStrategy (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ConcurrentSessionControlAuthenticationStrategy (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="ConcurrentSessionControlAuthenticationStrategy.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.web.authentication.session</a></div>
<h2 title="Class ConcurrentSessionControlAuthenticationStrategy" class="title">Class ConcurrentSessionControlAuthenticationStrategy</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.web.authentication.session.ConcurrentSessionControlAuthenticationStrategy</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>org.springframework.beans.factory.Aware</code>, <code>org.springframework.context.MessageSourceAware</code>, <code><a href="SessionAuthenticationStrategy.html" title="interface in org.springframework.security.web.authentication.session">SessionAuthenticationStrategy</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ConcurrentSessionControlAuthenticationStrategy</span>
extends java.lang.Object
implements org.springframework.context.MessageSourceAware, <a href="SessionAuthenticationStrategy.html" title="interface in org.springframework.security.web.authentication.session">SessionAuthenticationStrategy</a></pre>
<div class="block">Strategy which handles concurrent session-control.
<p>
When invoked following an authentication, it will check whether the user in question
should be allowed to proceed, by comparing the number of sessions they already have
active with the configured <tt>maximumSessions</tt> value. The <a href="../../../core/session/SessionRegistry.html" title="interface in org.springframework.security.core.session"><code>SessionRegistry</code></a>
is used as the source of data on authenticated users and session data.
</p>
<p>
If a user has reached the maximum number of permitted sessions, the behaviour depends
on the <tt>exceptionIfMaxExceeded</tt> property. The default behaviour is to expire any
sessions that exceed the maximum number of permitted sessions, starting with the least
recently used sessions. The expired sessions will be invalidated by the
<a href="../../session/ConcurrentSessionFilter.html" title="class in org.springframework.security.web.session"><code>ConcurrentSessionFilter</code></a> if accessed again. If <tt>exceptionIfMaxExceeded</tt>
is set to <tt>true</tt>, however, the user will be prevented from starting a new
authenticated session.
</p>
<p>
This strategy can be injected into both the <a href="../../session/SessionManagementFilter.html" title="class in org.springframework.security.web.session"><code>SessionManagementFilter</code></a> and
instances of <a href="../AbstractAuthenticationProcessingFilter.html" title="class in org.springframework.security.web.authentication"><code>AbstractAuthenticationProcessingFilter</code></a> (typically
<a href="../UsernamePasswordAuthenticationFilter.html" title="class in org.springframework.security.web.authentication"><code>UsernamePasswordAuthenticationFilter</code></a>), but is typically combined with
<a href="RegisterSessionAuthenticationStrategy.html" title="class in org.springframework.security.web.authentication.session"><code>RegisterSessionAuthenticationStrategy</code></a> using
<a href="CompositeSessionAuthenticationStrategy.html" title="class in org.springframework.security.web.authentication.session"><code>CompositeSessionAuthenticationStrategy</code></a>.
</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>3.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="CompositeSessionAuthenticationStrategy.html" title="class in org.springframework.security.web.authentication.session"><code>CompositeSessionAuthenticationStrategy</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">

</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected org.springframework.context.support.MessageSourceAccessor</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#messages">messages</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#%3Cinit%3E(org.springframework.security.core.session.SessionRegistry)">ConcurrentSessionControlAuthenticationStrategy</a></span>&#8203;(<a href="../../../core/session/SessionRegistry.html" title="interface in org.springframework.security.core.session">SessionRegistry</a>&nbsp;sessionRegistry)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#allowableSessionsExceeded(java.util.List,int,org.springframework.security.core.session.SessionRegistry)">allowableSessionsExceeded</a></span>&#8203;(java.util.List&lt;<a href="../../../core/session/SessionInformation.html" title="class in org.springframework.security.core.session">SessionInformation</a>&gt;&nbsp;sessions,
int&nbsp;allowableSessions,
<a href="../../../core/session/SessionRegistry.html" title="interface in org.springframework.security.core.session">SessionRegistry</a>&nbsp;registry)</code></th>
<td class="colLast">
<div class="block">Allows subclasses to customise behaviour when too many sessions are detected.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#getMaximumSessionsForThisUser(org.springframework.security.core.Authentication)">getMaximumSessionsForThisUser</a></span>&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</code></th>
<td class="colLast">
<div class="block">Method intended for use by subclasses to override the maximum number of sessions
that are permitted for a particular authentication.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#onAuthentication(org.springframework.security.core.Authentication,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">onAuthentication</a></span>&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code></th>
<td class="colLast">
<div class="block">In addition to the steps from the superclass, the sessionRegistry will be updated
with the new session information.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#setExceptionIfMaximumExceeded(boolean)">setExceptionIfMaximumExceeded</a></span>&#8203;(boolean&nbsp;exceptionIfMaximumExceeded)</code></th>
<td class="colLast">
<div class="block">Sets the <tt>exceptionIfMaximumExceeded</tt> property, which determines whether the
user should be prevented from opening more sessions than allowed.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#setMaximumSessions(int)">setMaximumSessions</a></span>&#8203;(int&nbsp;maximumSessions)</code></th>
<td class="colLast">
<div class="block">Sets the <tt>maxSessions</tt> property.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentSessionControlAuthenticationStrategy.html#setMessageSource(org.springframework.context.MessageSource)">setMessageSource</a></span>&#8203;(org.springframework.context.MessageSource&nbsp;messageSource)</code></th>
<td class="colLast">
<div class="block">Sets the <code>MessageSource</code> used for reporting errors back to the user when the
user has exceeded the maximum number of authentications.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">

</a>
<h3>Field Detail</h3>
<a id="messages">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>messages</h4>
<pre>protected&nbsp;org.springframework.context.support.MessageSourceAccessor messages</pre>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.springframework.security.core.session.SessionRegistry)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ConcurrentSessionControlAuthenticationStrategy</h4>
<pre>public&nbsp;ConcurrentSessionControlAuthenticationStrategy&#8203;(<a href="../../../core/session/SessionRegistry.html" title="interface in org.springframework.security.core.session">SessionRegistry</a>&nbsp;sessionRegistry)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sessionRegistry</code> - the session registry which should be updated when the
authenticated session is changed.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="onAuthentication(org.springframework.security.core.Authentication,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>onAuthentication</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onAuthentication&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication,
                             javax.servlet.http.HttpServletRequest&nbsp;request,
                             javax.servlet.http.HttpServletResponse&nbsp;response)</pre>
<div class="block">In addition to the steps from the superclass, the sessionRegistry will be updated
with the new session information.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionAuthenticationStrategy.html#onAuthentication(org.springframework.security.core.Authentication,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">onAuthentication</a></code>&nbsp;in interface&nbsp;<code><a href="SessionAuthenticationStrategy.html" title="interface in org.springframework.security.web.authentication.session">SessionAuthenticationStrategy</a></code></dd>
</dl>
</li>
</ul>
<a id="getMaximumSessionsForThisUser(org.springframework.security.core.Authentication)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaximumSessionsForThisUser</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;getMaximumSessionsForThisUser&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</pre>
<div class="block">Method intended for use by subclasses to override the maximum number of sessions
that are permitted for a particular authentication. The default implementation
simply returns the <code>maximumSessions</code> value for the bean.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>authentication</code> - to determine the maximum sessions for</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>either -1 meaning unlimited, or a positive integer to limit (never zero)</dd>
</dl>
</li>
</ul>
<a id="allowableSessionsExceeded(java.util.List,int,org.springframework.security.core.session.SessionRegistry)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>allowableSessionsExceeded</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;allowableSessionsExceeded&#8203;(java.util.List&lt;<a href="../../../core/session/SessionInformation.html" title="class in org.springframework.security.core.session">SessionInformation</a>&gt;&nbsp;sessions,
                                         int&nbsp;allowableSessions,
                                         <a href="../../../core/session/SessionRegistry.html" title="interface in org.springframework.security.core.session">SessionRegistry</a>&nbsp;registry)
                                  throws <a href="SessionAuthenticationException.html" title="class in org.springframework.security.web.authentication.session">SessionAuthenticationException</a></pre>
<div class="block">Allows subclasses to customise behaviour when too many sessions are detected.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sessions</code> - either <code>null</code> or all unexpired sessions associated with
the principal</dd>
<dd><code>allowableSessions</code> - the number of concurrent sessions the user is allowed to
have</dd>
<dd><code>registry</code> - an instance of the <code>SessionRegistry</code> for subclass use</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="SessionAuthenticationException.html" title="class in org.springframework.security.web.authentication.session">SessionAuthenticationException</a></code></dd>
</dl>
</li>
</ul>
<a id="setExceptionIfMaximumExceeded(boolean)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setExceptionIfMaximumExceeded</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setExceptionIfMaximumExceeded&#8203;(boolean&nbsp;exceptionIfMaximumExceeded)</pre>
<div class="block">Sets the <tt>exceptionIfMaximumExceeded</tt> property, which determines whether the
user should be prevented from opening more sessions than allowed. If set to
<tt>true</tt>, a <tt>SessionAuthenticationException</tt> will be raised which means
the user authenticating will be prevented from authenticating. if set to
<tt>false</tt>, the user that has already authenticated will be forcibly logged
out.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>exceptionIfMaximumExceeded</code> - defaults to <tt>false</tt>.</dd>
</dl>
</li>
</ul>
<a id="setMaximumSessions(int)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaximumSessions</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setMaximumSessions&#8203;(int&nbsp;maximumSessions)</pre>
<div class="block">Sets the <tt>maxSessions</tt> property. The default value is 1. Use -1 for
unlimited sessions.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>maximumSessions</code> - the maximimum number of permitted sessions a user can have
open simultaneously.</dd>
</dl>
</li>
</ul>
<a id="setMessageSource(org.springframework.context.MessageSource)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setMessageSource</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setMessageSource&#8203;(org.springframework.context.MessageSource&nbsp;messageSource)</pre>
<div class="block">Sets the <code>MessageSource</code> used for reporting errors back to the user when the
user has exceeded the maximum number of authentications.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>setMessageSource</code>&nbsp;in interface&nbsp;<code>org.springframework.context.MessageSourceAware</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="ConcurrentSessionControlAuthenticationStrategy.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ConcurrentSessionControlAuthenticationStrategy.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040d730fa54980c","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
